/*
 * @Author: chengjiang
 * @Date: 2024-10-31 10:31:01
 * @Description: 
 */
import Axios from 'axios'
import { setToken, getToken } from '../utils/token';
import { message } from 'ant-design-vue';
import { CODE_11011, CODE_11012, CODE_11013, CODE_11014, CODE_11015, CODE_11016 } from '../enums/global';
const baseURL = '' // 走代理

const axios = Axios.create({
  baseURL,
  timeout: 20000 // 请求超时 20s
})

// 前置拦截器（发起请求之前的拦截）
axios.interceptors.request.use(
  (config) => {
    // 请求之前处理config
    const token = getToken();
    /**
     * 根据你的项目实际情况来对 config 做处理
     * 这里对 config 不做任何处理，直接返回
     */
    config.headers['Authorization'] = token
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 后置拦截器（获取到响应时的拦截）
axios.interceptors.response.use(
  (response) => {
    /**
     * 根据你的项目实际情况来对 response 和 error 做处理
     * 这里对 response 和 error 不做任何处理，直接返回
     */
    if (response.data.code !== 0) {
      // response.data.code === 10000000 ||
      if ([CODE_11011, 
        CODE_11012, 
        CODE_11013, 
        CODE_11014, 
        CODE_11015, 
        CODE_11016].includes(response.data.code as number)) {
        // token 失效
        setToken();
        // 刷新页面
        message.error(response.data.message)
      }
    }
    return response.data
  },
  (error) => {
    if (error.response && error.response.data) {
      const code = error.response.status
      const msg = error.response.data.message
      message.error(`Code: ${code}, Message: ${msg}`)
      console.error(`[Axios Error]`, error.response)
    } else {
      message.error(`${error}`)
    }
    return Promise.reject(error)
  }
)

export default axios